export {}

// 函数类型 参数和返回值都得加类型
function add(a:number, b:number): number {
  return a+b
}
let num = add(3,3)

// 参数和返回值分开注解
const add1 = (a: number, b: number): number => {
  return a + b
}

let num1 = add1(1,2)

// 整体注解 (利用了类型别名,注意: 只能用在函数表达式上)
type AddFn =(a: number, b: number) => number
const add2: AddFn = (a,b) => {
  return a + b
}
let num2 = add2(2,3)

// 函数参数可选
// 注意可选参数要放在必选参数的后面
function buildName(firstName: string, lastName?: string): string {
  if (lastName) {
    return firstName + lastName
  } else {
    return firstName
  }
}

const name = buildName('小')

// 函数没有任何返回值的时候用void  函数默认没有写return的时候 返回值是undefined
function eachArr(arr: number[]):void {
  arr.forEach(item => {
    console.log(item)
  })
}
eachArr([1,2,3])